desc_geo = xstrdup("");
}
- if (wpt->gc_data->desc_short.utfstring) {
+ if (!wpt->gc_data->desc_short.utfstring.isEmpty()) {
char* stripped_html = strip_html(&wpt->gc_data->desc_short);
desc_short = xstrdup(wpt->gc_data->diff == 0 ? "\n\n" : "");
desc_short = xstrappend(desc_short, xstrdup(stripped_html));
desc_short = xstrdup("");
}
- if (wpt->gc_data->desc_long.utfstring) {
+ if (!wpt->gc_data->desc_long.utfstring.isEmpty()) {
char* stripped_html = strip_html(&wpt->gc_data->desc_long);
desc_long = xstrdup("\n\n");
desc_long = xstrappend(desc_long, xstrdup(stripped_html));
class utf_string{
public:
utf_string() :
- is_html(false),
- utfstring(NULL)
+ is_html(false)
{};
bool is_html;
- char* utfstring;
+ QString utfstring;
};
class geocache_data {
char* xml_entitize(const char* str);
char* html_entitize(const char* str);
char* strip_html(const utf_string*);
-char* strip_nastyhtml(const char* in);
+char* strip_nastyhtml(const QString& in);
char* convert_human_date_format(const char* human_datef); /* "MM,YYYY,DD" -> "%m,%Y,%d" */
char* convert_human_time_format(const char* human_timef); /* "HH+mm+ss" -> "%H+%M+%S" */
char* pretty_deg_format(double lat, double lon, char fmt, const char* sep, int html); /* decimal -> dd.dddd or dd mm.mmm or dd mm ss */
xml_tag* xml_findnext(xml_tag* root, xml_tag* cur, const char* tagname);
char* xml_attribute(xml_tag* tag, const char* attrname);
-char* rot13(const char* str);
+char* rot13(const QString& str);
/*
* PalmOS records like fixed-point numbers, which should be rounded
if (wp->gc_data->hint && !opt_hint_at_end) {
gbfprintf(fd, "HINT: %s\n", wp->gc_data->hint);
}
- if (wp->gc_data->desc_short.utfstring || wp->gc_data->desc_long.utfstring) {
+ if (!wp->gc_data->desc_short.utfstring.isEmpty() || !wp->gc_data->desc_long.utfstring.isEmpty()) {
gbfputs("DESC: ", fd);
- if (wp->gc_data->desc_short.utfstring) {
+ if (!wp->gc_data->desc_short.utfstring.isEmpty()) {
char* s1 = strip_html(&wp->gc_data->desc_short);
char* s2 = cet_str_utf8_to_any(s1, global_opts.charset);
gbfprintf(fd, "%s\n", s2);
xfree(s2);
xfree(s1);
}
- if (wp->gc_data->desc_long.utfstring) {
+ if (!wp->gc_data->desc_long.utfstring.isEmpty()) {
char* s1 = strip_html(&wp->gc_data->desc_long);
char* s2 = cet_str_utf8_to_any(s1, global_opts.charset);
gbfputs(s2, fd);
gbfprintf(file_out, "<tr><td colspan=\"2\">");
- if (wpt->gc_data->desc_short.utfstring) {
+ if (!wpt->gc_data->desc_short.utfstring.isEmpty()) {
char* tmpstr = strip_nastyhtml(wpt->gc_data->desc_short.utfstring);
gbfprintf(file_out, "<p class=\"gpsbabeldescshort\">%s</p>\n", tmpstr);
xfree(tmpstr);
}
- if (wpt->gc_data->desc_long.utfstring) {
+ if (!wpt->gc_data->desc_long.utfstring.isEmpty()) {
char* tmpstr = strip_nastyhtml(wpt->gc_data->desc_long.utfstring);
gbfprintf(file_out, "<p class=\"gpsbabeldesclong\">%s</p>\n", tmpstr);
xfree(tmpstr);
AUTOFORMATTING_RESTORE(af);
}
-static void kml_write_cdata_element(const char* name, const char* value)
+static void kml_write_cdata_element(const char* name, const QString& value)
{
writer.writeStartElement("Data");
writer.writeAttribute("name", name);
kml_write_data_element("gc_type", gs_get_cachetype(waypointp->gc_data->type));
kml_write_data_element("gc_icon", is);
- kml_write_cdata_element("gc_short_desc", waypointp->gc_data->desc_short.utfstring ? waypointp->gc_data->desc_short.utfstring : "");
- kml_write_cdata_element("gc_long_desc", waypointp->gc_data->desc_long.utfstring ? waypointp->gc_data->desc_long.utfstring : "");
+ kml_write_cdata_element("gc_short_desc", waypointp->gc_data->desc_short.utfstring);
+ kml_write_cdata_element("gc_long_desc", waypointp->gc_data->desc_long.utfstring);
logs = kml_geocache_get_logs(waypointp);
kml_write_cdata_element("gc_logs", logs);
xfree(logs);
docprintf(100, "%s/%s\n", gs_get_cachetype(wpt->gc_data->type),
gs_get_container(wpt->gc_data->container));
- if (wpt->gc_data->desc_short.utfstring) {
+ if (!wpt->gc_data->desc_short.utfstring.isEmpty()) {
char *stripped_html = strip_html(&wpt->gc_data->desc_short);
docprintf(10+strlen(stripped_html), "\n%s\n", stripped_html);
xfree(stripped_html);
}
- if (wpt->gc_data->desc_long.utfstring) {
+ if (!wpt->gc_data->desc_long.utfstring.isEmpty()) {
char *stripped_html = strip_html(&wpt->gc_data->desc_long);
docprintf(10+strlen(stripped_html), "\n%s\n", stripped_html);
xfree(stripped_html);
gs_get_cachetype(wpt->gc_data->type), gs_get_container(wpt->gc_data->container),
(int)(wpt->gc_data->diff / 10), (wpt->gc_data->diff%10)?".5":"",
(int)(wpt->gc_data->terr / 10), (wpt->gc_data->terr%10)?".5":"");
- if (wpt->gc_data->desc_short.utfstring) {
+ if (!wpt->gc_data->desc_short.utfstring.isEmpty()) {
char *stripped_html = strip_html(&wpt->gc_data->desc_short);
gbfprintf(file_out, "\n%s\n", stripped_html);
xfree(stripped_html);
}
- if (wpt->gc_data->desc_long.utfstring) {
+ if (!wpt->gc_data->desc_long.utfstring.isEmpty()) {
char *stripped_html = strip_html(&wpt->gc_data->desc_long);
gbfprintf(file_out, "\n%s\n", stripped_html);
xfree(stripped_html);
}
char *
-rot13(const char *s)
+rot13(const QString& s)
{
- char *result = xstrdup(s);
+ char *result = xstrdup(s.toUtf8().data());
char *cur = result;
int flip = 1;
while (cur && *cur) {
* <style> </style> - stop overriding styles for everything
*/
char *
-strip_nastyhtml(const char * in)
+strip_nastyhtml(const QString& in)
{
char *returnstr, *sp;
char *lcstr, *lcp;
- sp = returnstr = xstrdup(in);
- lcp = lcstr = strlower(xstrdup(in));
+ sp = returnstr = xstrdup(in.toUtf8().data());
+ lcp = lcstr = strlower(xstrdup(in.toUtf8().data()));
while (lcp = strstr(lcstr, "<body>"), NULL != lcp) {
sp = returnstr + (lcp - lcstr) ; /* becomes <! > */
char *
strip_html(const utf_string *in)
{
- char *outstring, *out;
- char *instr = in->utfstring;
+ char* outstring, *out;
+ // If toUtf8() is used here, we double encode in the OSM test case.
+ // this may be a bug here or elsewhere.
+ char* instr = xstrdup(in->utfstring.toAscii().data());
char tag[8];
unsigned short int taglen = 0;
if (!in->is_html) {
- return xstrdup(in->utfstring);
+ return instr;
}
/*
* We only shorten, so just dupe the input buf for space.
*/
- outstring = out = xstrdup(in->utfstring);
+ outstring = out = xstrdup(in->utfstring.toUtf8().data());
tag[0] = 0;
while (*instr) {
tmp->gc_data->desc_short.is_html = wpt->gc_data->desc_short.is_html;
tmp->gc_data->desc_long.is_html = wpt->gc_data->desc_long.is_html;
tmp->gc_data->favorite_points = wpt->gc_data->favorite_points;
+ tmp->gc_data->desc_short.utfstring = wpt->gc_data->desc_short.utfstring;
+ tmp->gc_data->desc_long.utfstring = wpt->gc_data->desc_long.utfstring;
- // memcpy(gc_data, wpt->gc_data, sizeof(*gc_data));
- if (wpt->gc_data->desc_short.utfstring) {
- tmp->gc_data->desc_short.utfstring =
- xstrdup(wpt->gc_data->desc_short.utfstring);
- }
- if (wpt->gc_data->desc_long.utfstring) {
- tmp->gc_data->desc_long.utfstring =
- xstrdup(wpt->gc_data->desc_long.utfstring);
- }
if (wpt->gc_data->placer) {
tmp->gc_data->placer = xstrdup(wpt->gc_data->placer);
}
if (wpt->gc_data != &empty_gc_data) {
geocache_data *gc_data = (geocache_data *)wpt->gc_data;
- if (gc_data->desc_short.utfstring) {
- xfree(gc_data->desc_short.utfstring);
- }
- if (gc_data->desc_long.utfstring) {
- xfree(gc_data->desc_long.utfstring);
- }
if (gc_data->placer) {
xfree(gc_data->placer);
}